import config from '../config'
/**
 * 时间格式化
 * @param {string | Date} value
 * @param {string} fmt
 * @example
 *  dateFormat(value, 'yyyy-MM-dd hh:mm:ss')
 *  dateFormat(value, 'yyyy年MM月dd日 hh时mm分')
 *  在filter中使用:
 *      {{str | dateFormat('yyyy-MM-dd hh:mm:ss')}}
 */
const dateFormat = (value, fmt) => {
  if (value) {
    const getDate = typeof (value) === 'string' ? new Date(value.replace(/-/g, '/')) : new Date(value)
    const o = {
      'M+': getDate.getMonth() + 1,
      'd+': getDate.getDate(),
      'h+': getDate.getHours(),
      'm+': getDate.getMinutes(),
      's+': getDate.getSeconds(),
      'q+': Math.floor((getDate.getMonth() + 3) / 3),
      'S': getDate.getMilliseconds()
    }
    if (/(y+)/.test(fmt)) {
      fmt = fmt.replace(RegExp.$1, (getDate.getFullYear() + '').substr(4 - RegExp.$1.length))
    }
    for (const k in o) {
      if (new RegExp('(' + k + ')').test(fmt)) {
        fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)))
      }
    }
    return fmt
  }
}

/**
 * 隐藏字符
 * @method hiddenMidPart
 * @param {string} str 要隐藏的字符串
 * @param {number} frontLen 字符串头部显示位数
 * @param {number} endLen 字符串尾部显示位数
 * @example
 * 使用 hiddenMidPart(str, 1, 1)
 * 在filter中使用：
 *  {{str | hiddenMidPart(1, 1)}}
 * @returns {string} 如'111***111'
 */
const hiddenMidPart = (str, frontLen, endLen) => {
  if (!str) {
    return str
  }
  if (str.length === 2) {
    return '*' + str.substring(1)
  } else if (str.length < 2) {
    return str
  }
  let len = str.length - frontLen - endLen
  if (len <= 0) {
    frontLen = 1
    endLen = 1

    if (str.length <= endLen) {
      endLen = endLen - 1
    }

    let xing = ''
    for (let i = 0; i < (str.length - frontLen - endLen); i++) {
      if (i < 3) {
        xing += '*'
      }
    }
    return str.substring(0, frontLen) + xing + str.substring(str.length - endLen)
  } else {
    // if (len < frontLen || len < endLen) return '';
    let xing = ''
    for (let i = 0; i < len; i++) {
      if (i < 3) {
        xing += '*'
      }
    }

    return str.substring(0, frontLen) + xing + str.substring(str.length - endLen)
  }
  // }
}

/**
 * 选择图片前缀，返回图片完全路径
 * @param {string} str
 * @example
 *  checkImgPrefix(str)
 *  在vue js中使用
 *      this.$options.filters.checkImgPrefix(str)
 *  在vue template中使用：
 *      {{imgUrl | checkImgPrefix}}
 */
const checkImgPrefix = (str) => {
  if (!str) {
    return ''
  }
  if (str.indexOf('http') > -1) {
    return str
  }
  if (str.indexOf('hallsite') > -1 || str.indexOf('website') > -1) {
    return config.baseUrl.IMG_URL + str
  } else {
    return config.baseUrl.IMG_CHECK_URL + str
  }
  // hallsite ,website
}

/**
 * 取消带html代码的符号，并限制显示长度
 * @param {string} content
 * @param {number} maxLength
 * @example
 *   contentReform(content, 20)
 *   在filter中使用:
*      {{imgUrl | contentReform(20)}}
 */
const contentReform = (content, maxLength) => {
  content = content.replace(/&nbsp;/g, '').split('')
  let tagBoolean = false
  content.forEach((c, index) => {
    if (c === '<') {
      tagBoolean = true
    } else if (c === '>') {
      content[index] = ''
      tagBoolean = false
      // continue;  如果是JavaScript可以添加这句代码，angular4不行。
    }
    if (tagBoolean) {
      content[index] = ''
    }
  })
  content = content.join('').replace(/ /g, '')
  if (maxLength) {
    if (content.length > parseInt(maxLength)) {
      return content.substring(0, parseInt(maxLength)) + '...'
    }
  }
  return content
}
export default {
  dateFormat,
  hiddenMidPart,
  checkImgPrefix,
  contentReform
}
